The following is a partial list of Tools Plus features. Nearly all of them can be accomplished by a single line of code calling a Tools Plus routine. Although some of these features may appear to be simple, their functional equivalent, when programmed in C or Pascal without Tools Plus, often requires considerable programming effort and dozens (often hundreds) of lines of code. Unlike object oriented class libraries that add thousands of lines of code to your application, Tools Plus reduces the need for most of your user interface and event management code, often by as much as 80 to 95%.
The key advantages to every Tools Plus routine are:
• virtually all features can be implemented with a single line of
code
• they are consistent across all Systems and Macintosh models
• they are fully integrated with each other
• they adopt the “set and forget” principle of self-maintenance
allowing you to easily create a user interface, then forget about
it. Your application responds to very specific events, such as:
a Pop-up menu was selected in Window 5, Pop-Up Menu 3, Item 6.
W i n d o w s
~~~~~~~~~~
All standard window types are supported
Referenced by a window number instead of a pointer (pointers can be used if required)
Full tool bar and floating palette services
Movable modal dialog is fully supported, and is also available on pre-System 7 Macs
Any window can be modal to prevent the use of menus or clicking outside the active window
Optional modal access to the Edit menu or any menu as specified by your application
All Tools Plus user interface elements (such as buttons, editing fields, etc.) created in a window are automatically maintained… Tools Plus takes care of drawing them and making them work.
Window positioning options when a new window is opened:
√ centered on main monitor
√ tiled (down and right of frontmost standard window, title bar is
visible)
√ window must be at least partially visible (in case its co-
ordinates are remembered by a document, and it is opened on a
Mac with a monitor that is smaller than the document’s creator)
√ entire window must be visible
All user interface elements are correctly disabled/deselected when a window is deactivated and restored to their original state when the window is activated
Windows with title bars are moved automatically when the use drags them (Tools Plus ensures that windows are not dragged completely off the screen or underneath the tool bar)
Minimum/maximum size limits can also limit resizing to vertical or horizontal only
Windows with a “size box” are automatically sized when the user drags the box
Windows with a “zoom box” in their title bar automatically zoom between a standard size/position and a user-controlled size/position
The window’s update region is protected to exclude Tools Plus’ user interface elements so your application can refresh a window’s contents without concern about accidentally overwriting buttons, scroll bars, etc.
When a window needs to be refreshed, your application can redraw custom objects (such as a picture background) before and/or after Tools Plus redraws its objects
Your application can reposition, resize, or hide/show a window and still have Tools Plus maintain the user interface correctly
Set/change backdrop color (defaults to white)
Various routines help your application keep track of windows: frontmost, current, active, frontmost floating palette, frontmost standard window, most recently used, containing active editing field, and more.
Closing a window automatically releases the memory occupied by Tools Plus user interface elements (buttons, scroll bars, etc.)
The Finder and all other applications can be hidden as is seen in many installer application
T o o l B a r
~~~~~~~~~~
Optional tool bar is created below the menu bar on your main monitor
As easy to use as a regular window
Always remains the front window and is always active
Can contain any Tools Plus user interface element, including pop-up menus, editing fields and picture buttons
Adjustable height (width is fixed at main monitor’s width)
Automatically hidden when your application is suspended under MultiFinder (System 5 and 6), or System 7. When your application is activated, the tool bar is displayed again.
Can optionally shift all your application’s windows downward as the tool bar opens. This prevents windows from being partially obscured by the tool bar. If this option is used, windows are shifted back up when the tool bar is closed.
If the tool bar’s size is changed by your application (to add or remove a data entry area, for example), all open windows can optionally be shifted to accommodate the difference in tool bar size
Windows cannot be dragged beneath the tool bar
F l o a t i n g P a l e t t e s
~~~~~~~~~~~~~~~~~~~~~~
Floating palettes (often called “palettes” or “windoids”) are supported
As easy to use as a regular window
You can use third-party window definitions (WDEFs) or write your own to get a specific look. Tools Plus takes care of making the window behave like a floating palette.
Always remain in front of standard windows (if any are open) and behind the tool bar (if there is one)
Can contain any Tools Plus user interface element, including pop-up menus, editing fields and picture buttons
Palettes are moved automatically when the user drags them (Tools Plus ensures that they are not dragged completely off the screen or underneath the tool bar)
When the user clicks on an object (such as a picture button) in floating palette, that palette is quickly brought to the front and refreshed before the click is processed. This results in very responsive and professional looking palettes.
Automatically hidden when your application is suspended under MultiFinder (System 5 and 6), or System 7. When your application is activated, the palettes are displayed again.
Two styles of palettes are included with Tools Plus: one with a title bar along the top of the palette (with optional title), and a second style that has a drag bar along the left side of the palette. The second style is well suited for horizontally oriented palettes that need to be as small as possible (the drag bar takes little space).
B u t t o n s
~~~~~~~~~
Buttons are referenced by a button number instead of a handle
All 3 types of Macintosh buttons are supported: push button, radio button and check box
Custom control definitions (CDEFs) can be used. Tools Plus makes them behave like a push button, check box or radio button (it makes CDEFs work automatically).
Can adopt a universal color scheme or be individually colored including individual backgrounds
Enable/disable
Select/deselect (check boxes and radio buttons only)
Hide/shown
Obscure (hide without affecting the window’s image)
Delete or kill (delete without removing image)
Move, resize, change co-ordinates or offset (change co-ordinates without altering image)
Optional automatic move/resize as window’s size changes
Default push button (a black outline is drawn around the button and it is automatically selected whenever the user types Return or Enter)
Optional selection using a command key
Buttons are automatically disabled when their parent window is inactive and return to their normal state when the window is reactivated.
Each button can have its own font, font size, and style
Optional double-click detection for radio buttons (can be interpreted to mean “select button and OK”)
“Flash” a push button to make it appear as though it was clicked
P i c t u r e B u t t o n s
~~~~~~~~~~~~~~~~~~~~
Picture buttons are referenced by a button number instead of a handle
Any icon or PICT can be transformed into a button (they can also contain complex sets of images)
Enable/disable
Select/deselect
Hide/shown
Obscure (hide without affecting the window’s image)
Delete or kill (delete without removing image)
Move or offset (change co-ordinates without altering image)
Optional automatic move as window’s size changes
Optional “value” with a minimum/maximum range (like a scroll bar)
Each button’s appearance and behavior is defined by selecting from a number of choices with literally thousands of combinations
Picture buttons can be simple like click-sensitive icons, or they can be powerful and provide the appearance of animation
Converts a simple black and white SICN icon a into richly featured 3D color picture button
Multiple stage picture buttons have a different appearance for each value in the button’s range, such as an “on/off” button that has a value range from 0 to 1 and has the word “on” or “off” displayed.
Optional locking in “selected” position (to behave like a radio button)
Button’s value can change automatically as user interacts with it and/or under your application’s control
Button’s value can change in the following manner:
√ constant speed
√ accelerate at a slow, moderate, or rapid rate
√ precise rate, such as 90° per second
Optional repeating events generated as long as the mouse button is held down
Optional polarization increases the value when clicked on one side and decrease when clicked on the other
Multiple disabling effects (or alternate image)
Multiple selection effects (or alternate image)
Picture buttons are automatically disabled when their parent window is inactive and return to their normal state when the window is reactivated.
“Flash” a picture button to make it appear as though it was clicked
S c r o l l B a r s
~~~~~~~~~~~~~~
Scroll bars are referenced by a scroll bar number instead of a handle
Custom control definitions (CDEFs) can be used. Tools Plus makes them behave like a scroll bar (it makes CDEFs work automatically).
Enable/disable
Hide/shown
Obscure (hide without affecting the window’s image)
Delete or kill (delete without removing image)
Move, resize, change co-ordinates or offset (change co-ordinates without altering image)
Optional automatic move/resize as window’s size changes
Change value, minimum/maximum limit
Minimum/maximum limits automatically adjusts if the value is set outside the range
Optional limiting prevents value from exceeding minimum/maximum limit
Optional throttling lets you control each scroll bar’s speed
Optional “live scrolling” lets you easily scroll objects in real time as the scroll bar’s thumb is dragged… just process events as you normally do without the need for complex “action” routines
You can easily install an action routine that is repeatedly called while the scroll bar is tracked and get details about the scroll bar calling the routine
Attach scroll bars to the window’s right and/or bottom edge to have them automatically repositioned and resized when the window is resized
Scroll bars are automatically “framed” (empty rectangle) when their parent window is inactive and they return to their normal state when the window is reactivated
Scroll bars can be disabled instead of being framed when their parent window is inactive and return to their normal state when the window is reactivated
E d i t i n g F i e l d s
~~~~~~~~~~~~~~~~~
Easily created with a single line of code
Editing fields are referenced by a field number instead of a handle
Each field can manipulate and store up to 32K of text
Optional vertical and/or horizontal scroll bars (scroll bars and text are always synchronized)
Optional “live scrolling” lets you scroll the field’s text in real time as the scroll bar’s thumb is dragged
Enable/disable a field with a variety of visual options
Disabling a field with no visual effects makes it a “read only” field that can’t be edited by the user… great for a set of instruction in a scrolling display area
Hide/shown
Obscure (hide without affecting the window’s image)
Delete or kill (delete without removing image)
Move, resize, change co-ordinates or offset (change co-ordinates without altering image)
Optional automatic move/resize as window’s size changes
Each field can have its own font, font size and style
Field height can be specified in pixels or lines
User edits a copy of the field’s text so your application can revert to the original text at any time
Get/set a field’s text
Get a field’s edited text (the text the user is editing and that has not been saved)
Paste text into a field under application control
Filters allow/disallow specified characters
Optional shifting to upper case or lower case characters as letters are typed
Optional length limiting allows the user to type only a certain number of characters (the field’s length)
Sophisticated selection and cursor control allows:
√ shorten/extend a selection a single character at a time (shift-
arrow)
√ shorten/extend a selection a word at a time (shift-option-arrow)
√ move cursor a word at a time (option-arrow)
√ vertical cursor movement that remember the horizontal position
(i.e., move up in a straight line)
√ shift-click extends/shortens a selection
√ double-click selects a word
√ typed text is always in view
√ view follows cursor
Tab sensing with optional tab to next field or to previous field if shift-tab was typed
Progressive drag-selection works in conjunction with automatic scrolling making it easy to select additional characters that are out of view -- the further you move the cursor out of the field, the quicker it scrolls
Text in single-line fields never disappears as it does with ordinary Macintosh fields -- it always scrolls reliably
The Edit menu automatically interacts with the active editing field. The Undo, Cut, Copy, Paste, Clear (and optionally Select All) items are automatically enabled/disabled appropriately (see Menus). Selected text is automatically copied to and from the clipboard when using the Edit Menu. All Edit menu items are functional when they are created.
Automatic management of user interface complexities that arise when fields are included on standard windows, floating palettes, and the tool bar
Choose between memory efficiency for small fields and speed for larger fields
Advanced low-memory protection (continue without undo, not enough memory, low memory warnings, etc.)
Selected characters are automatically deselected when the field’s window is inactive and return to their normal state when the window is reactivated
L i s t B o x e s
~~~~~~~~~~~~~
Easily created with a single line of code
List boxes are referenced by a list box number instead of a handle.
Each list box can have its own font, font size, and style
Custom list definitions (LDEFs) can be used. Tools Plus makes them work automatically
Add, change, delete lines as required (referenced by line number)
Select/deselect lines
Hide/shown
Obscure (hide without affecting the window’s image)
Delete or kill (delete without removing image)
Move, resize, change co-ordinates or offset (change co-ordinates without altering image)
Optional automatic move/resize as window’s size changes
Various methods are available for selecting lines in a list box, such as: one line only, multiple lines, select as you drag the mouse, and many more
When you create a list box, the first selected line will always be in view (i.e. not scrolled out of view)
Your application can determine if a specific line, or any lines are selected in a list box
A sorted set of resource names (such as fonts or sounds) can be inserted into a list box with a single command
List box height can be specified in pixels or lines
List boxes are automatically disabled (the lines are deselected and the scroll bar is disabled) when their window is inactive, and are enabled when the window is activated
P a n e l s
~~~~~~~~
Produce group boxes or panels to give your application a professional appearance
Easily created with a single line of code
Optional flat or 3D title with inset or raised text
Panels can be simple outlines or 3D (inset or raise)
Optional rounded corners
Each panel can have its own font, font size, and style
Optionally deselect other buttons in the group when one is selected (ideal for radio buttons or CDEF groups)
Memory efficient color map is shared by all panels in your application (programmer defined)
Custom color map can optionally be adopted by panels as they are created
Automatic mapping to lower color depths and/or black and white (optional override)
Hide/shown
Obscure (hide without affecting the window’s image)
Delete or kill (delete without removing image)
Move, resize, change co-ordinates or offset (change co-ordinates without altering image)
Optional automatic move/resize as window’s size changes
M e n u s
~~~~~~~
Easily created with a single command
Menus are referenced by a menu number instead of a handle
Hierarchical menus are just as easy to create and maintain as regular pull-down menus
Menu hierarchies are easily created by simply attaching a submenu to a menu item
Prevents hierarchy errors such as:
√ cyclical hierarchies
√ submenus attached to multiple parents
√ Command keys invoking an item in an orphan submenu
(i.e., submenu with no parent), and more
Prevents logical menu errors such as overwriting a submenu link with a command key
Menus can be easily added, changed, deleted, renamed, appended, enabled/disabled, restyled, prefaced with a symbol or icon, etc.
Command key equivalents, icons, check marks, other special marks, and font styling are all supported
Create a functioning Apple menu with a single command to give your application access to desk accessories (also includes the “About…” item that names your application)
Access to the Help menu and Applications menu (System 7 or later) is as easy as any other menu
Hide or show menu bar (automatically shows when application is suspended)
When using the Finder in System 5 or System 6, menus are automatically enabled/disabled appropriately when a desk accessory is active. Under MultiFinder and System 7, the menu bar is automatically replaced with the desk accessory’s menu bar when the DA is active.
The Edit menu’s Undo, Cut, Copy, Paste, and Clear (and optionally Select All) items automatically perform editing functions on the active field and in desk accessories. These menu items are automatically enabled/disabled appropriately.
The Edit menu’s Undo item performs Undo/Redo operations on the active editing field. It automatically changes to “Undo Cut”, “Undo Copy”, “Undo Paste”, and “Undo Typing” as required. Selecting “Undo…” changes the item to “Redo…” and automatically performs the correct action.
P o p - U p M e n u s
~~~~~~~~~~~~~~~~
Easily created with a single line of code
Pop-up menus are referenced by a menu and item number instead of a handle
Identical across all system versions thereby providing System 7 features to prior systems
Optional pop-down menu has a fixed (unchanging) title inside the pop-up box, and the available items appear beneath the control’s box
Enable/disable
Hide/shown
Obscure (hide without affecting the window’s image)
Delete or kill (delete without removing image)
Move, resize, change co-ordinates or offset (change co-ordinates without altering image)
Optional automatic move/resize as window’s size changes
Supports “down arrow” suppression, multiple fonts, single item selection, and more
When displaying a pop-up menu using a font other than the System Font (such as Geneva 9pt), Tools Plus’ pop-up menus are unaffected by other applications that may use unorthodox programming techniques (such as a famous word processor that resets other applications’ pop-up menu font size).
Optionally display the selected item’s icon in the pop-up menu’s box
Items in the menu can be added, changed, deleted, renamed, appended, enabled/disabled, restyled, prefaced with a symbol or icon, etc.
Icons, check marks, other special marks, and font styling are all supported
Pop-up menus are automatically disabled when their parent window is inactive and return to their normal state when the window is reactivated
M o u s e
~~~~~~~
Single, double, and triple clicks, as well as dragging is automatically detected and reported
A cursor table can be used to detect if the mouse was clicked in specific areas (such as a picture or icon). This feature effectively makes any object “click sensitive.”
E v e n t H a n d l i n g ( P o l l i n g )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A single routine keeps all automatic Tools Plus processes running smoothly and informs your application if something has occurred such as the user selecting a menu or clicking a button
The revolutionary Event Translator reports events in a highly informative, simple, concise, and ready-to-use format instead of being cryptic and requiring message decoding. Example: the “Save” button was selected in the “Add Customer” window (button 4 was selected in window 15), or “Menu Item 16 was selected in Menu 4.” This is much simpler than decoding event messages, tracking controls, and using handles and pointers.
Most events are processed entirely by Tools Plus such as typing in an active editing field or selecting its text, or using the Edit menu on a field, or running desk accessories. It’s completely automatic and requires no coding at all.
Tools Plus takes care of maintaining the user interface before it reports an event to your application. For example, in a doRefresh event (refresh a window), all Tools Plus user interface elements (buttons, scroll bars, editing fields, etc.) are redrawn automatically.
Many events can be ignored if your application doesn’t care about them, such as when the user drags or re-sizes a window or if the text in a field is changed
Events that are not processed by Tools Plus are reported to your application, which can either ignore them or process them as required. This allows advanced programmers to implement their own special features.
C l i p b o a r d
~~~~~~~~~~~~
The clipboard is automatically maintained when using the Edit menu on an editing field (the clipboard contains copied text)
Your application does not need to directly interact with the clipboard because the Edit menu takes care of moving text between your application and the clipboard and vice versa
The Edit menu’s “Undo” operation restores the clipboard to its original state, so if you accidentally copy something to the clipboard and undo the copying, the clipboard’s original contents are automatically restored
C u r s o r s
~~~~~~~~~
The shape of the cursor can be changed with a single command
Color cursors are fully supported
The cursor’s shape changes automatically depending on where it is on the screen (i.e., I-Beam inside a field, different shape per cursor zone, an arrow outside the active window., etc.)
A cursor table can be set up to automatically change the cursor’s shape depending on its position in a window, so it could become a “plus” cursor when located over a grid of cells (like in a spreadsheet application) and an arrow elsewhere.
When the wrist watch cursor is displayed, Tools Plus discards all mouse clicks and typing except Command-. (operator halting a lengthy process)
Optionally, your application can permit the clicking of a push button when the wrist watch cursor is displayed. This is useful if you have a Cancel button displayed on a window during a lengthy process.
Multiple cursor animation sequences (like the Finder’s spinning wrist watch) are supported
Your application is informed when the cursor moves into a new cursor zone in case you want to display a message as the user points to something
D e s k A c c e s s o r i e s
~~~~~~~~~~~~~~~~~~~~~
Access to desk accessories is made possible by creating the Apple menu with a single command
The Edit menu’s Undo, Cut, Copy, Paste, and Clear items interact automatically with desk accessories
Desk accessories are handled automatically by Tools Plus (you don’t have to program anything to use them)
D i a l o g s / A l e r t s
~~~~~~~~~~~~~~~~~~
Alerts and modal dialog boxes are supported by standard C or Pascal statements, however they can be easily simulated by using Tools Plus windows or Tools Plus’ Dynamic Alerts
D y n a m i c A l e r t s
~~~~~~~~~~~~~~~~~~~
Dynamic Alerts are alerts (or simple dialogs) that are automatically sized in relation to the alert’s contents -- they grow as big as needed to always appear aesthetically pleasing, and buttons are sized to accommodate their text. It’s like having hundreds of customized alert boxes available at your disposal without having to create any resources.
Dynamic Alerts are created with a single command and do not require the use of resources
You can use various combinations of Yes, No, OK, and Cancel buttons, or define your own combinations. A default button can be optionally specified.
An icon can be optionally displayed and the alert can optionally beep when displayed
Buttons can be selected using command keys (i.e., a “Yes” button can be selected with Command-Y)
Dynamic Alerts, unlike Macintosh alerts, are unaffected by screen savers
Dynamic Alerts are always centered perfectly on the main monitor regardless of the monitor’s size or the number of monitors used
C u s t o m W i n d o w s a n d C o n t r o l s
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Third party WDEFs (window definitions) can be used for windows and CDEFs (control definitions) can be used for buttons and scroll bars. Tools Plus makes them work automatically.
Custom CDEFs that do not related to buttons or scroll bars and require specific application processing can also be used. Tools Plus hands events pertaining to those controls directly to your application.
E x t r a s
~~~~~~~~
C/C++ programmers can use Pascal strings (the default), C and Pascal strings, or C strings exclusively as parameters in Tools Plus routines. You can get rid of “\p…” when you use Tools Plus.
Multiple language support (English, French, German, etc.)
Zoom lines, such as those displayed by the Finder when a document is opened, are available to make objects appear to zoom out from the screen or zoom back down again.
All icon types (cicn, icl8, icl4, ics8, ics4, ics#, SICN, ICON, and ICN#) are drawn with a single command.
√ selected/unselected
√ enabled/disabled
√ drawn correctly across multiple monitors
Indexed SICN drawing
Macintosh-standard thermometer is system independent (identical to the Finder’s)
Multiple color text drawing routines
Multiple picture drawing routines
‘STR#’ structure maintenance (create new structure, get, add, change and delete string)
Create and destroy off-screen BitMap or PixMap
System independent BitMap to region conversion
Initialize a structure (set to zero)
Compare two structures for equality
System version
Tools Plus version
M o n i t o r s
~~~~~~~~~~
Color, gray-scale and monochrome (black and white) monitors are supported, as are multiple-monitor setups
Specialized routines facilitate color-dependent drawing and inform your application of its environment
All Tools Plus objects are displayed correctly even when spanning multiple monitors
All objects support dynamic monitor resolution changes as made possible with today’s multi-scan monitors
All objects support dynamic monitor setup changes as made possible with System 7.5 or later
M e m o r y
~~~~~~~~~
Memory fragmentation due to opening and closing windows is eliminated regardless of the number of windows your application uses or has open at the same time
Tools Plus is memory efficient requiring little of your application’s memory for its own overhead
Tools Plus does not fragment memory
S y s t e m s
~~~~~~~~~~
Tools Plus can be compiled into applications intended for System 5 and System 6 (Finder and MultiFinder), System 7, and Power Macintosh (in 68040 emulation and/or native mode).
C u s t o m C D E F s
~~~~~~~~~~~~~~~~
Custom CDEFs (buttons and other controls) are available from third parties and Water’s Edge Software. Tools Plus can make them as easy to implement and use as regular buttons and scroll bars.
The Tools Plus Developer Kit includes SuperCDEFs, the world-class controls for discerning developers that give your applications a professional look. They include:
√ replacement for standard Apple buttons with a white center in
check box and radio buttons
√ check box with an additional “undefined” state
√ check box with a programmer-defined icon in place of the “x” in
the box
√ variety of buttons including optional 3D bodies and/or 3D title
(inset or raised text)
√ thermometer with optional “busy state” (the moving barber pole
effect as seen in the Finder)
√ variety of tabs including optional 3D bodies and/or 3D title
(inset or raised text)
√ variety of sliders including optional 3D bodies and/or 3D text for